//
//  RootHeaderBannerView.m
//  VTravel
//
//  Created by lanouhn on 16/8/2.
//  Copyright © 2016年 xiaoYu. All rights reserved.
//

#import "RootHeaderBannerView.h"

@interface RootHeaderBannerView ()<UITableViewDelegate, UITableViewDataSource>

/** Banner标题数据源 */
@property (nonatomic, strong) NSArray *dataArray;

/** 记录当前公告滚动的下标 */
@property (nonatomic, assign) NSInteger currentIndex;

@end

@implementation RootHeaderBannerView


/** 实现bannerView的初始化方法 */
- (instancetype) initWithFrame:(CGRect)frame bannerDataArray:(NSArray *)BannerArray{
    if (self = [super initWithFrame:frame]) {
        self = [[[NSBundle mainBundle] loadNibNamed:@"RootHeaderBannerView" owner:self options:nil] lastObject];
        self.frame = frame; // 一定要设置frame
        
        /** 小鸟动画方法 */
        [self startBirdAnimanation];

        /** 公告tableView */
        self.bannerTableView.dataSource = self;
        self.bannerTableView.delegate = self;
        // 把tableView的线取消
        self.bannerTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        
        self.dataArray = BannerArray;
        
        // 一开始默认展示第一条数据
        self.currentIndex = 0;
        // 添加计时器实现公告滚动动画
        [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(timeAnimanation) userInfo:nil repeats:YES];
        
    }
    return self;
}

#pragma mark - 封装小鸟的动画方法
- (void)startBirdAnimanation{
    
    NSMutableArray *imageArr = [NSMutableArray array];
    for (int i = 1; i < 12; i ++) {
        UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"鸟的煽动动画00%02d", i]];
        [imageArr addObject:image];
    }
    // 动画数组
    self.birdImageView.animationImages = imageArr;
    // 动画间隔
    self.birdImageView.animationDuration = 2;
    // 重复次数
    self.birdImageView.animationRepeatCount = 0;
    // 开始动画
    [self.birdImageView startAnimating];
}

#pragma  mark - 公告滚动动画计时器调用方法
- (void)timeAnimanation{

    // 安全判断
    if (self.dataArray.count != 0) {
        // 如果公告滚动到最后一个就从第一个开始
        if (self.currentIndex == self.dataArray.count - 1) {
            self.currentIndex = 0;
        }else{
            self.currentIndex ++;
        }
    }
    // 刷新分区
    [self.bannerTableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:(UITableViewRowAnimationTop)];
}

#pragma mark - UITableViewDataSource
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return self.dataArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    // 重用
    static NSString *identifier = @"CELL";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell  == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
    }
    // 选中样式
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    
    if (self.dataArray != nil) {
        cell.textLabel.text = self.dataArray[self.currentIndex];
        cell.textLabel.textColor = kRandomColor;
        cell.textLabel.font = [UIFont systemFontOfSize:16];
    }
    
    return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 30;
}
#pragma  mark - UITableViewDelegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    // View不能响应跳转界面的方法,所以需要在VC里面实现跳转 此时有三种方法:Block 代理 通知
    // 此时选用Block来实现 Block可以传值,回调,还可以请求数据的时候在数据结束返回数据
    if (self.clickBannerBlock) {
        self.clickBannerBlock(self.currentIndex);
    }
}

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    // Drawing code
}
*/

@end
